package com.android.love.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.FrameLayout.LayoutParams;

import java.util.*;

import com.nostra13.universalimageloader.core.ImageLoader;

public class BannerAdapter extends PagerAdapter {
	private List<View> views = Collections.emptyList();


	public BannerAdapter(Context context, List<View> views) {
		this.views = views;
	}

	/**
	 * 此方法会将容器中指定页面给移除 该方法中的参数container和position跟instantiateItem方法中的内容一致
	 * 
	 * @param object
	 *            这个object 就是 instantiateItem方法中返回的那个Object
	 */
	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		if (views != null)
			((ViewPager) container).removeView(views.get(position));
	}

	/**
	 * 要显示的页面的个数
	 */
	@Override
	public int getCount() {
		if (views == null)
			return 0;
		return views.size();
	}

	/**
	 * 创建指定position的页面。这个适配器会将页面加到容器container中。
	 * 
	 * @param container
	 *            创建出的实例放到container中，这里的container就是viewPager
	 * @return 返回一个能表示该页面的对象，不一定要是view，可以其他容器或者页面。
	 */
	@Override
	public Object instantiateItem(View container, final int position) {

		// ImageView view = (ImageView) views.get(position);
		// view.setOnClickListener(new OnClickListener() {
		//
		// @Override
		// public void onClick(View v) {
		// // Log.i(TAG, "mPager...onclick---" + position + "----"
		// }
		// });
		// ImageLoader.getInstance().displayImage(urls.get(position), view);
		if (views == null)
			return null;
		((ViewPager) container).addView(views.get(position), 0);
		return views.get(position);
	}

	/**
	 * 这个方法就是比较一下容器中页面和instantiateItem方法返回的Object是不是同一个
	 * 
	 * @param arg0
	 *            ViewPager中的一个页面
	 * @param arg1
	 *            instantiateItem方法返回的对象
	 */
	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0 == arg1;
	}
}
